require 'crawl'
require 'searchIndex'

class Guide

	class Config 
		@@actions = ['crawl', 'buscar', 'sair']

		def self.actions
			@@actions
		end
	end

	def launch!
		introduction

		result = nil
		until result == :sair do
			action = get_action
			result = do_action(action)
		end

		conclusion
	end

	def get_action
		action = nil
		until Guide::Config.actions.include?(action)
			puts "Acoes: " + Guide::Config.actions.join(", ") if action
			print "> "
			action = gets.chomp.downcase.strip
		end

		return action
	end

	def do_action(action)
		case action
		when 'crawl'
			crawl
		when 'buscar'
			search
		when 'sair'
			return :sair
		end
	end

	def crawl
		puts "\nInforme a profundidade de sua busca na arvore de links:\n"
		print "> "
		depth = gets.chomp.strip

		puts "\nIniciando Crawling...\n"
		Crawl.with_depth depth
		puts "\nCrawling finalizado.\n"
	end

	def search
		puts "\nInforme o sintoma para que localizemos o remedio adequado:\n"
		print "> "
		symptom = gets.chomp.strip

		SearchIndex.by_symptom symptom
	end
	

	def	introduction
        puts "\n<<< Bem-Vindo ao #{APP_NAME} >>>\n\n"
		puts "Este e um guia interativo que ira te ajudar a encontrar"
		puts "o remedio para curar seus sintomas. \n\n"

		puts "Ele realiza uma busca em http://bulario.net atraves"
		puts "do sintoma desejado, retornando a URL da bula do respectivo remedio.\n\n"
	end

	def conclusion
		puts "\n<<< Ate logo! >>>\n\n"
	end

end
